﻿/*****************************************************************************  

 Version: 0.1
 Website: http://www.visuagile.com/
 
 Copyright (c) Yoganand R. All rights reserved.
 For continued development and updates, visit http://yogsbreath.net
 
 ******************************************************************************/

using System.Collections;
using System.Collections.Generic;
using VisualAgile.Model;
using System;

namespace VisualAgile.IBLL
{
    /// <summary>
    /// Users
    /// </summary>
    public interface IUserManager
    {
        /// <summary>
        /// Create a user (back to contain the default value)
        /// </summary>
        /// <returns></returns>
        User NewUser();

        /// <summary>
        /// Save User
        /// </summary>
        /// <param name="user">User</param>
        /// <returns></returns>
        User SaveUser(User user);

        /// <summary>
        /// Get User
        /// </summary>
        /// <param name="userId">User ID</param>
        /// <returns></returns>
        User GetUser(Guid userId);

        /// <summary>
        /// Access to users by project
        /// </summary>
        /// <param name="userId">Project ID</param>
        /// <returns></returns>
        IList GetByProject(Guid projectId);

        /// <summary>
        /// Access to users by name
        /// </summary>
        /// <param name="userId">User name</param>
        /// <returns></returns>
        User GetByName(string userName);


        /// <summary>
        /// Delete user
        /// </summary>
        /// <param name="userId">User ID</param>
        /// <returns></returns>
        void DeleteUser(Guid userId);

        /// <summary>
        /// Update User
        /// </summary>
        /// <param name="user">User</param>
        /// <returns></returns>
        User UpdateUser(User user);

        /// <summary>
        /// Access to users
        /// </summary>
        /// <returns></returns>
        IList  GetAll();
    }
}
